package sucre

import java.text.SimpleDateFormat
class ConstanciasController {

    def loginService
    def beforeInterceptor = [action:this.&auth]
    def auth = {
        def result =loginService.validarAcceso(
            session["seguridad_usuario"],
            session["seguridad_funcionesHabilitadas"],
            controllerName,actionName,request.getRemoteAddr().toString())
        if(!result) {
            redirect(controller:"login",action:"auth",params:['acceso':false])
            return false
        }
    }
    def index = {}
    // the delete, save and update actions only accept POST requests
    static allowedMethods = [delete:'POST', save:'POST', update:'POST']

    def parametersService
    def create = {
        def alumnoInstance = new Alumno()
        params.eOc='edit'
        alumnoInstance.properties = params
        //-----------busco el alumno que inicio session-------------------------
        def usuario = Usuario.findByLogin(session["seguridad_usuario"])
        alumnoInstance=Alumno.findByCorreo(usuario.email)
        return [alumnoInstance:alumnoInstance,eOc:params.eOc]
    }

    def constanciaAlumno = {
        def data = new ArrayList();                
        SimpleDateFormat formatoDia = new SimpleDateFormat("dd")
        SimpleDateFormat formatoMes = new SimpleDateFormat("MM")
        SimpleDateFormat formatoAnio = new SimpleDateFormat("yyyy")
        
        String stringDia  = formatoDia.format(new Date())
        String stringMes  = formatoMes.format(new Date())
        String stringAnio = formatoAnio.format(new Date())
        
        String dia  = message(code:'reporte.dia.' + stringDia) + " ("+stringDia+")"
        String mes  = message(code:'reporte.mes.' + stringMes)
        String anio =  message(code:'reporte.anio.' + stringAnio) + "("+stringAnio+")"
        def aldea = Aldea.list().get(0)
        params.direccion = aldea.nombre + ". " + aldea.direccion + "."
        params.aldea = aldea.nombre
        params.dia = dia
        params.mes = mes
        params.anio = anio
        params._format="PDF"
        //--------------defino que tipo de constancia---------------------------
        params._name="constanciaDeEstudio"
        params._file="constanciaEstudio"
        if(params.constancia.equals("No Becado")) {
            params._name="constanciaBecado"
            params._file="constanciaBecado"
        }
        
        params.imgSucre = servletContext.getRealPath("/images/sucre.png")
        params.ubv = servletContext.getRealPath("/images/ubv.png")
        def alumno = Alumno.findByCedula(params.cedula)
        params.especialidad = alumno?.especialidad?.nombre
        //-----------------busco lapso academico para obtener
        // las materias que cursa y luego la division-------------------
        def lapso = sucre.LapsoAcademico.createCriteria()
        def results = lapso.list (max: 1, offset: 0) {
            order("id", "desc")
        }
        
        def inscripcion = sucre.Inscripcion.createCriteria()
        def lapsoA = ""
        if (!results.isEmpty()){
            lapsoA = results.get(0).nombre
        }
        def inscripciones = inscripcion.list (max: 1, offset: 0) {
            eq("lapsoAcademico",lapsoA)
            eq("alumno", alumno)
            order("id", "desc")
        }
        if (inscripciones.size()==0){
            params._format="PDF"
            params._name="noInscrito"
            params._file="noInscrito"
            params.mensaje = "El Triunfador " + alumno.nombres + " "
            params.mensaje += alumno.apellidos + " con cédula de identidad N° "
            params.mensaje += alumno.cedula + " no ha realizado inscripción en el lapso académico en curso "
            params.mensaje += lapsoA + ", en la " + aldea.nombre + ".";
            chain(controller:'jasper',action:'index',params:params)
        } else {
             params.division = inscripciones.get(0).division.nombre.replace("-", " en ")
        }
        params.division =""
        //-------------Busco datos de Coordinador-----------------------
        def coordinador = Coordinador.findByEstado(true)
        params.coordinador = coordinador.nombres + " " + coordinador.apellidos
        data.add(alumno)
        
        chain(controller:'jasper',action:'index',model:[data:data],params:params)
    }
}
